﻿using System;

namespace _001_调试和错误处理
{
    class Program
    {
        static void Main(string[] args)
        {
            /* int temp = 34;
             int num1 = 30;
             //在中断模式下我们可以单步执行代码，单步执行带有两种，逐过程和逐语句，他们两个都是一条语句一条语句的执行，区别在于逐过程遇到函数，不会进入函数内部，而把函数当成一条语句去执行。
             string str = "許斌";
             Console.WriteLine(str);
             Console.WriteLine(num1);
             Console.WriteLine(temp);*/

            //标准的错误异常处理：try……catch……finally;
            try//包含可能出现异常的代码（一条或者多条语句）
            {
                int[] Array = { 1, 2, 30 };
                Console.WriteLine(Array[3]);
            }
            catch(IndexOutOfRangeException e)//在这里我们虽然写了异常捕捉的程序，但如果我们捕捉的类型不对，所以当发生别的类型的异常的时候，依然会终止
            {//用来捕捉异常，当代码发生异常，那么异常的类型和catch块中的类型一样的时候
                //就会执行该catch块。如果catch块的参数不写，表示发生任何异常都执行这个catch块；
                Console.WriteLine("发生异常：数组下标越界");
            }
            finally
            {//finally块包含了始终会执行的代码，不管有没有异常产生都会执行
                Console.WriteLine("已执行异常处理");
            }
            //其中catch块可以有0或者多个，finally可以有0或者1个
            //但是如果没有catch块，必须有finally块，没有finally块，必须有catch块
            //catch块与finally块可以同时存在
            Console.ReadKey();

            



        }
    }
}
